package ManyToMay;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import javax.persistence.Table;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.JoinColumn;

@ Entity
@ Table (name = "tab_curso")
public class Curso implements java.io.Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private Integer Id_curso;
    private String codigo;
    private String nome;
    private String sibla;
    
    @ ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinTable (name = "tab_departamento_curso",
                joinColumns = @JoinColumn(name = "Id_curso"),
                inverseJoinColumns = @JoinColumn(name = "Id_departamento"))
    private List <Departamento> departamentos = new ArrayList<>();

    public Curso() {
    }

    public Curso(String codigo, String nome, String sibla) {
        this.codigo = codigo;
        this.nome = nome;
        this.sibla = sibla;
    }

    public Integer getId_curso() {
        return Id_curso;
    }

    public void setId_curso(Integer Id_curso) {
        this.Id_curso = Id_curso;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSibla() {
        return sibla;
    }

    public void setSibla(String sibla) {
        this.sibla = sibla;
    }

    public List<Departamento> getDepartamentos() {
        return departamentos;
    }

    public void setDepartamentos(List<Departamento> departamentos) {
        this.departamentos = departamentos;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 19 * hash + Objects.hashCode(this.Id_curso);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Curso other = (Curso) obj;
        if (!Objects.equals(this.Id_curso, other.Id_curso)) {
            return false;
        }
        return true;
    }
    
    
    
}
